﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using quinielonModel;
using System.Collections;
using DataSetTableAdapters; 

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        //Obtiene los partidos

        quinielonEntities db = new quinielonEntities();
        try
        {
            usuario usu = (usuario)Session["user"];
            var tableAdapter = new GET_QUINIELA_ACTIVA_USUARIOTableAdapter();
            var resultado = tableAdapter.GetData(usu.id_fb);
             if (resultado.Count == 0)
            {
                db.Dispose();
                Session["Error"] = "No hay chiquinielas para rellenar. Podrías crear una nueva, no?";
                Response.Redirect("nuevaError.aspx", false);
            }
            else
            {
                labFecha.Text = resultado.FirstOrDefault().fecha.ToShortDateString();
                labJornada.Text = resultado.FirstOrDefault().jornada.ToString();

                dibujarTabla(usu, resultado);
            }
            db.Dispose();

        }
        catch (Exception ex)
        {
            db.Dispose();
            Session["Error"] = "Error: por favor revisa los datos y vuelve a intentarlo";
            Response.Redirect("nuevaError.aspx", true);
        }
    }

    private void dibujarTabla(usuario usuario, DataSet.GET_QUINIELA_ACTIVA_USUARIODataTable resultado)
    {

        ImageButton img;
        //Cabecera de la tabla
        var fila = new TableRow();
        var cell = new TableCell();
        cell.Text = "Nº";
        cell.Style.Value = "padding-right: 10px;";
        fila.Cells.Add(cell);
        cell = new TableCell();
        cell.Text = "Local";
        fila.Cells.Add(cell);
        cell = new TableCell();
        cell.Text = "Visitante";
        fila.Cells.Add(cell);
        
        
        cell = new TableCell();
        img = new ImageButton();
        cell.ColumnSpan = 3;
         img.ImageUrl = "http://graph.facebook.com/"+usuario.id_fb+"/picture";
        img.AlternateText = "user photo";
        img.Height = 50;
        img.Width = 50;
        cell.Style.Value = "padding-right: 3px;";
        cell.Controls.Add(img);
        fila.Cells.Add(cell);
        
        cell = new TableCell();
        cell.Text = "Resultado";
        fila.Cells.Add(cell);
        fila.Style.Value = "text-align: center; font-weight: bold;";
        fila.Attributes["seleccionado"] = "12";
        Table1.Rows.Add(fila);
        int index = 0;
        foreach (var r in resultado)
        {
            index++;
            string resultadoPartido = "";
            fila = new TableRow();
            fila.Attributes["seleccionado"] = "0";
            cell = new TableCell();
            cell.Text = r.n_partido.ToString();
            cell.Style.Value = "text-align: center;";
            fila.Cells.Add(cell);
            cell = new TableCell();
            cell.Text = r.e_local;
            cell.Style.Value = "padding-right: 3px;";
            fila.Cells.Add(cell);
            cell = new TableCell();
            cell.Text = r.e_visitante;
            cell.Style.Value = "padding-right: 2px;";
            fila.Cells.Add(cell);

            img = new ImageButton();
            
            cell = new TableCell();
            img.ID = index.ToString()+"_1";
            img.Attributes.Add("seleccionado", "0");
            img.Click += new ImageClickEventHandler(ImageButton1_Click);

            img.ImageUrl = "pics/p_1.png";
            img.Height = 20;
            img.Width = 14;
            cell.Controls.Add(img);
            fila.Cells.Add(cell);
            img = new ImageButton();
            cell = new TableCell();
            img.ID = index.ToString() + "_3";
            img.Attributes.Add("seleccionado", "0");
            img.Click += new ImageClickEventHandler(ImageButton1_Click);

            img.ImageUrl = "pics/p_x.png";
            img.Height = 20;
            img.Width = 14;
            cell.Controls.Add(img);
            fila.Cells.Add(cell);
            img = new ImageButton();
            cell = new TableCell();
            cell.Style.Value = "padding-right: 3px;";
            img.ID = index.ToString() + "_2";
            img.Attributes.Add("seleccionado", "0");
            img.Click += new ImageClickEventHandler(ImageButton1_Click);

            img.ImageUrl = "pics/p_2.png";
            img.Height = 20;
            img.Width = 14;
            cell.Controls.Add(img);
            fila.Cells.Add(cell);
           

            cell = new TableCell();

            if (r.resultado != null)
            {
                Button1.Enabled = false;
                if (r.resultado.Equals("3"))
                    resultadoPartido = "X";
                else
                    resultadoPartido = r.resultado;
            }
            cell.Text = resultadoPartido;
            cell.Style.Value = "text-align: center; font-weight: bold;";
            fila.Cells.Add(cell);
            fila.Attributes["seleccionado"] = "0";
            Table1.Rows.Add(fila);

            pintarPronosticos(fila, r);


        }
    }

    private void pintarPronosticos(TableRow fila, DataSet.GET_QUINIELA_ACTIVA_USUARIORow r)
    {
       
        if(r.pronostico!=null)
        {
            CambiaPronostico(r.n_partido.ToString() + "_" + r.pronostico);    
            
        }
        

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        //Actualiza los pronosticos

        quinielonEntities db = new quinielonEntities();
        usuario usu = (usuario)Session["user"];
        if (todasRellenas())
        {

            try
            {
                var partidos = from p in db.partido
                               join c in db.columna on p.columna equals c
                               join q in db.quiniela on c.quiniela equals q
                               where c.usuario.id_fb.Equals(usu.id_fb) && q.activa == true
                               select p;

                foreach (var p in partidos)
                {
                    p.pronostico = Table1.Rows[(int)p.n_partido].Attributes["seleccionado"];
                }
                db.SaveChanges();
                db.Dispose();
                Response.Redirect("michiquinielaSuccess.aspx", false);
            }
            catch (Exception ex)
            {
                db.Dispose();
                Session["Error"] = "Error: por favor revisa los datos y vuelve a intentarlo";
                Response.Redirect("nuevaError.aspx", true);
            }
        }
        else
        {
            Label1.Text = "Anda chiqui, marca todos los partidos";
            Label1.Visible = true;
        }
    }

    private bool todasRellenas()
    {
        foreach (TableRow row in Table1.Rows)
        {
            if (row.Attributes["seleccionado"].Equals("0"))
                return false;
        }
        return true;
    }

    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        CambiaPronosticoPostBack(((ImageButton)sender).ID);

    }

    private void CambiaPronostico(string idImagen)
    {
        if (!IsPostBack)
        {
            var boton = (ImageButton)Utils.FindControlIterative(this, idImagen);
            var id = boton.ID;
            var fila = id.Split(new char[] { '_' });
            boton.Attributes["seleccionado"] = "1";
            boton.ImageUrl = "pics/p_xx.png";
            TableRow row = Table1.Rows[int.Parse(fila[0])];
            row.Attributes["seleccionado"] = fila[1];
            ImageButton botonAux;

            //switch dependiendo del resultado
            switch (int.Parse(fila[1].ToString()))
            {
                case 1:
                    //El 2
                    botonAux = (ImageButton)Utils.FindControlIterative(this, fila[0] + "_2");
                    botonAux.Attributes["seleccionado"] = "0";
                    botonAux.ImageUrl = "pics/p_2.png";

                    //La X
                    botonAux = (ImageButton)Utils.FindControlIterative(this, fila[0] + "_3");
                    botonAux.Attributes["seleccionado"] = "0";
                    botonAux.ImageUrl = "pics/p_x.png";
                    break;
                case 2:
                    //El 1
                    botonAux = (ImageButton)Utils.FindControlIterative(this, fila[0] + "_1");
                    botonAux.Attributes["seleccionado"] = "0";
                    botonAux.ImageUrl = "pics/p_1.png";

                    //La X
                    botonAux = (ImageButton)Utils.FindControlIterative(this, fila[0] + "_3");
                    botonAux.Attributes["seleccionado"] = "0";
                    botonAux.ImageUrl = "pics/p_x.png";
                    break;
                //El 3 es la X
                case 3:
                    //El 1
                    botonAux = (ImageButton)Utils.FindControlIterative(this, fila[0] + "_1");
                    botonAux.Attributes["seleccionado"] = "0";
                    botonAux.ImageUrl = "pics/p_1.png";

                    //El 2
                    botonAux = (ImageButton)Utils.FindControlIterative(this, fila[0] + "_2");
                    botonAux.Attributes["seleccionado"] = "0";
                    botonAux.ImageUrl = "pics/p_2.png";
                    break;
            }
        }
    }

    private void CambiaPronosticoPostBack(string idImagen)
    {
        var boton = (ImageButton)Utils.FindControlIterative(this, idImagen);
        var id = boton.ID;
        var fila = id.Split(new char[] { '_' });
        boton.Attributes["seleccionado"] = "1";
        boton.ImageUrl = "pics/p_xx.png";
        TableRow row = Table1.Rows[int.Parse(fila[0])];
        row.Attributes["seleccionado"] = fila[1];
        ImageButton botonAux;

        //switch dependiendo del resultado
        switch (int.Parse(fila[1].ToString()))
        {
            case 1:
                //El 2
                botonAux = (ImageButton)Utils.FindControlIterative(this, fila[0] + "_2");
                botonAux.Attributes["seleccionado"] = "0";
                botonAux.ImageUrl = "pics/p_2.png";

                //La X
                botonAux = (ImageButton)Utils.FindControlIterative(this, fila[0] + "_3");
                botonAux.Attributes["seleccionado"] = "0";
                botonAux.ImageUrl = "pics/p_x.png";
                break;
            case 2:
                //El 1
                botonAux = (ImageButton)Utils.FindControlIterative(this, fila[0] + "_1");
                botonAux.Attributes["seleccionado"] = "0";
                botonAux.ImageUrl = "pics/p_1.png";

                //La X
                botonAux = (ImageButton)Utils.FindControlIterative(this, fila[0] + "_3");
                botonAux.Attributes["seleccionado"] = "0";
                botonAux.ImageUrl = "pics/p_x.png";
                break;
            //El 3 es la X
            case 3:
                //El 1
                botonAux = (ImageButton)Utils.FindControlIterative(this, fila[0] + "_1");
                botonAux.Attributes["seleccionado"] = "0";
                botonAux.ImageUrl = "pics/p_1.png";

                //El 2
                botonAux = (ImageButton)Utils.FindControlIterative(this, fila[0] + "_2");
                botonAux.Attributes["seleccionado"] = "0";
                botonAux.ImageUrl = "pics/p_2.png";
                break;
        }
        
    }

}